iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0

題目說明

給定一個 linked list,回傳一個奇數點位排前面,偶數點位接續在奇數點位後面的 linked list
並且要使用 O(1)的空間複雜度與 O(n) 的時間複雜度

解題思路

這題要同時處理奇數點與偶數點,讓他們分別指向下兩個節點即可
需要注意的是,偶數點一定會先指到 null ,所以在遍歷的時候要先確保 evenNode.next 是否為空
還有記得要把 evenHead 保留住
最後兩個 list arrange 完後才可以將兩者併在一起

class Solution:
    def oddEvenList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        if not head or not head.next:
            return head
        evenHead = head.next
        evenNode = evenHead
        oddNode = head
        
        while evenNode and evenNode.next:
            oddNode.next = oddNode.next.next
            oddNode = oddNode.next
            evenNode.next = evenNode.next.next
            evenNode = evenNode.next
            
            
        oddNode.next = evenHead
        
        return head

今天晚上想去跳舞趕快來發個文 ><
到後面越寫越隨便,趁連假要來好好補完整(點頭


上一篇
Day 20 - 92. Reverse Linked List II
下一篇
Day 22 - 225. Implement Stack using Queues
系列文
Leetcode 習慣養成之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言